共计 7712 个字符,预计需要花费 20 分钟才能阅读完成。
一、环境信息
用途 | IP 地址 | 操作系统 | 备注 |
zabbix-server | 192.168.7.231 | openEuler22.03 LTS SP3 | Zabbix 7.2 LTS 版本,容器部署 |
zabbix-agent | 192.168.10.202 | Windows Server 2008R2 SP1 | Zabbix-agent for windows |
二、基础包安装
dnf install tar vim
三、Docker 部署
2.1 Docker 二进制包下载
curl -LO https://download.docker.com/linux/static/stable/x86_64/docker-28.1.1.tgz
2.2 安装 Dockers
tar xzvf docker-28.1.1.tgz
cp docker/* /usr/bin/
which docker
2.3 编写 docker.service 文件
执行 vim /etc/systemd/system/docker.service 命令,编辑文件添加以下内容:
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target<code class='language-default'>
执行:wq 命令保存即可。
2.4 添加可执行权限
chmod +x /etc/systemd/system/docker.service
2.5 添加 docker 自启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker
2.6 配置镜像加速器
创建 /etc/docker 配置文件目录:
编辑 vim /etc/docker/daemon.json(不存在则创建),添加以下内容:
{
“registry-mirrors”: [
“https://docker.1ms.run”,
“https://docker.xuanyuan.me”
],
“exec-opts”: [“native.cgroupdriver=systemd”]
}
2.7 重启 docker
systemctl restart docker
三、docker-compose 部署
3.1 查看 docker-compose 最新版本号
访问 docker-compose GitHub Releases (如 v2.36.1)。
3.2 下载 docker-compose-linux-x86-64
curl -L “https://github.com/docker/compose/releases/download/v2.36.1/docker-compose-linux-x86_64” -o /usr/local/bin/docker-compose
3.3 赋予可执行权限
chmod +x /usr/local/bin/docker-compose
四、安装部署 zabbix-server
4.1 zabbix7.2 新功能描述
4.2 zabbix7.2 安装要求
4.3 从容器中安装 zabbix
4.3.1 安装前阅读
此处选择 Mysql+nginx web 的组件。运行以下命令安装:
docker pull zabbix/zabbix-server-mysql
docker pull zabbix/zabbix-web-nginx-mysql
4.3.2 初始配置
该示例示范了如何运行 MySQL 数据库支持的 Zabbix Server、基于 Nginx Web 服务器的 Zabbix Web 界面和 Zabbix Java 网关。
1、创建专用于 Zabbix 组件容器的网络:
docker network create –subnet 172.20.0.0/16 –ip-range 172.20.240.0/20 zabbix-net<code class='language-default'>
2、创建 zabbix 工作目录
mkdir -p /home/application/zabbix<code class='language-default'>
3、创建 docker-compose.yml 文件
添加以下内容:
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
container_name: zabbix-server
restart: unless-stopped
ports:
– “10051:10051” # Zabbix Server 端口
environment:
– DB_SERVER_HOST=zabbix-mysql
– MYSQL_DATABASE=zabbix
– MYSQL_USER=zabbix
– MYSQL_PASSWORD=zabbix
– MYSQL_ROOT_PASSWORD=tools9012
volumes:
– zabbix_server_data:/var/lib/zabbix
depends_on:
– zabbix-mysql
networks:
– zabbix-net
zabbix-mysql:
image: mysql:8.0-debian
container_name: zabbix-mysql
restart: unless-stopped
environment:
– MYSQL_DATABASE=zabbix
– MYSQL_USER=zabbix
– MYSQL_PASSWORD=zabbix
– MYSQL_ROOT_PASSWORD=tools9012
– MYSQL_ALLOW_EMPTY_PASSWORD=no
volumes:
– /usr/share/zoneinfo:/usr/share/zoneinfo:ro
– zabbix_mysql_data:/var/lib/mysql
– ./mysql/run:/var/run/mysqld
command: [
‘–default-authentication-plugin=mysql_native_password’,
‘–character-set-server=utf8mb4’,
‘–collation-server=utf8mb4_bin’,
‘–pid-file=/var/run/mysqld/mysqld.pid’
]
networks:
– zabbix-net
healthcheck:
test: [“CMD”, “mysqladmin”, “ping”, “-h”, “localhost”]
interval: 5s
timeout: 3s
retries: 5
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:latest
container_name: zabbix-web
restart: unless-stopped
ports:
– “8080:8080” # Web 访问端口
environment:
– DB_SERVER_HOST=zabbix-mysql
– MYSQL_DATABASE=zabbix
– MYSQL_USER=zabbix
– MYSQL_PASSWORD=zabbix
– ZBX_SERVER_HOST=zabbix-server
– PHP_TZ=Asia/Shanghai
depends_on:
– zabbix-mysql
– zabbix-server
networks:
– zabbix-net
zabbix-agent:
image: zabbix/zabbix-agent:latest
container_name: zabbix-agent
restart: unless-stopped
environment:
#- ZBX_HOSTNAME=zabbix-agent
– ZBX_HOSTNAME=Zabbix server
# – ZBX_SERVER_HOST=zabbix-server
– ZBX_SERVER_HOST=zabbix-server,172.19.0.1
– ZBX_SERVERACTIVE=zabbix-server
ports:
– “10050:10050” # Agent 端口
networks:
– zabbix-net
volumes:
zabbix_server_data:
zabbix_mysql_data:
networks:
zabbix-net:
driver: bridge
<pre><code class='language-default'>
4、运行 zabbix-server
cd /home/application/zabbix
# 拉取镜像并启动容器(后台运行)docker-compose up -d
# 查看运行状态
docker-compose ps<code class='language-default'>
5、验证登录 zabbix-server web 控制台
WEB 登录地址:http://192.168.7.231:8080
默认密码:Admin/zabbix
五、安装部署 z abbix-agent

5.1 Windows 环境安装 agent

LogFile=C:Program Fileszabbix_agentzabbix_agentd.log # 日志文件路径
Server=192.168.7.231 # Zabbix Server 的 IP 地址
ServerActive=192.168.7.231 # 主动检查使用的 Server IP
Hostname=Cvm_vCenter # 必须与 Zabbix Web 界面中配置的主机名一致
4、安装 zabbix-agent 服务
将 C:Program Fileszabbix_agentconfzabbix_agentd.conf 文件拷贝至 C:Program Fileszabbix_agentbin 目录。
使用命令提示符安装 Zabbix Agent 服务:
cd /d C:Program Fileszabbix_agentbin
zabbix_agentd.exe -c zabbix_agentd.conf -i
5、启动服务
安装完成后,启动 Zabbix Agent 服务。
net start “Zabbix Agent”

5.2 Linux 环境安装 agent

wget https://cdn.zabbix.com/zabbix/binaries/stable/7.2.4/zabbix_agent-7.2.4-linux-3.0-i386-static.tar.gz
tar -xzvf zabbix_agent-7.2.4-linux-3.0-i386-static.tar.gz
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
mkdir -p /etc/zabbix
mkdir -p /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
cp sbin/zabbix_agentd /usr/sbin/
cp conf/zabbix_agentd.conf /etc/zabbix/
编辑配置文件:
vi /etc/zabbix/zabbix_agentd.conf<code class='language-default'>
修改以下关键参数:
Server=<ZABBIX_SERVER_IP>
ServerActive=<ZABBIX_SERVER_IP>
Hostname=< 本机主机名 >
LogFile=/var/log/zabbix/zabbix_agentd.log
PidFile=/var/run/zabbix/zabbix_agentd.pid<code class='language-default'>
6. 创建 systemd 服务文件
vi /etc/systemd/system/zabbix-agent.service
添加以下内容:[pre][Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment=”CONFFILE=/etc/zabbix/zabbix_agentd.conf”
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/var/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target<code class='language-default'>
7. 启动并启用服务
systemctl daemon-reload
systemctl start zabbix-agent
systemctl enable zabbix-agent<code class='language-default'>
8. 检查服务状态
systemctl status zabbix-agent
netstat -tulnp | grep zabbix<code class='language-default'>
9. 防火墙配置(如果需要)
firewall-cmd –permanent –add-port=10050/tcp
firewall-cmd –reload<code class='language-default'>
10. 验证安装
在 Zabbix Server 端尝试连接测试:
zabbix_get -s <agent_ip> -k “agent.ping”
附录 常见问题
1、web 界面提示“数据库中表的字符集或排序规则不受支持……”
问题描述:
web 界面提示,数据库中表的字符集或排序规则不受支持:acknowledges, actions, alerts, auditlog, autoreg_host, conditions, config, config_autoreg_tls, connector, connector_tag。
解决方案:
即时解决方案(不重启容器),动态生成并执行 SQL。
# 进入 MySQL 容器
docker exec -it zabbix-mysql mysql -uroot -p
— 在 MySQL 命令行中执行以下语句
USE zabbix;
SET @database = ‘zabbix’;
SET @charset = ‘utf8mb4’;
SET @collation = ‘utf8mb4_bin’;
DELIMITER $$
CREATE PROCEDURE convert_all_tables()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tbl_name VARCHAR(255);
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = @database;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO tbl_name;
IF done THEN
LEAVE read_loop;
END IF;
SET @sql = CONCAT(‘ALTER TABLE `’, tbl_name, ‘` CONVERT TO CHARACTER SET ‘, @charset, ‘ COLLATE ‘, @collation);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE cur;
END$$
DELIMITER ;
CALL convert_all_tables();
DROP PROCEDURE convert_all_tables;